#ifndef CONSTANTS_H
#define CONSTANTS_H

enum TokenId 
{
    EPSILON  = 0,
    DOLLAR   = 1,
    t_TOKEN_2 = 2, //";"
    t_TOKEN_3 = 3, //":"
    t_TOKEN_4 = 4, //","
    t_TOKEN_5 = 5, //":="
    t_TOKEN_6 = 6, //"["
    t_TOKEN_7 = 7, //"]"
    t_TOKEN_8 = 8, //"("
    t_TOKEN_9 = 9, //")"
    t_TOKEN_10 = 10, //"+"
    t_TOKEN_11 = 11, //"-"
    t_TOKEN_12 = 12, //"*"
    t_TOKEN_13 = 13, //"/"
    t_TOKEN_14 = 14, //"="
    t_TOKEN_15 = 15, //"~="
    t_TOKEN_16 = 16, //"<"
    t_TOKEN_17 = 17, //">"
    t_TOKEN_18 = 18, //">="
    t_TOKEN_19 = 19, //"<="
    t_TOKEN_20 = 20, //"&"
    t_TOKEN_21 = 21, //"|"
    t_TOKEN_22 = 22, //"~"
    t_TOKEN_23 = 23, //"."
    t_palavra_res = 24,
    t_identificador = 25,
    t_const_real = 26,
    t_const_lit = 27,
    t_const_int = 28,
    t_add = 29,
    t_begin = 30,
    t_boolean = 31,
    t_capacity = 32,
    t_char = 33,
    t_clear = 34,
    t_count = 35,
    t_delete = 36,
    t_do = 37,
    t_elementOf = 38,
    t_end = 39,
    t_false = 40,
    t_float = 41,
    t_ifFalse = 42,
    t_ifTrue = 43,
    t_int = 44,
    t_list = 45,
    t_program = 46,
    t_show = 47,
    t_showValue = 48,
    t_true = 49,
    t_wait = 50,
    t_waitValue = 51,
    t_whileFalse = 52,
    t_whileTrue = 53
};

const int STATES_COUNT = 54;

extern int SCANNER_TABLE[STATES_COUNT][256];

extern int TOKEN_STATE[STATES_COUNT];

extern int SPECIAL_CASES_INDEXES[55];

extern const char *SPECIAL_CASES_KEYS[25];

extern int SPECIAL_CASES_VALUES[25];

extern const char *SCANNER_ERROR[STATES_COUNT];

const int START_SYMBOL = 54;

const int FIRST_NON_TERMINAL    = 54;
const int FIRST_SEMANTIC_ACTION = 90;

extern int PARSER_TABLE[36][53];

extern int PRODUCTIONS[79][8];

extern const char *PARSER_ERROR[90];

#endif
